#ifndef DATOSTRASMITIDOS_H_INCLUDED
#define DATOSTRASMITIDOS_H_INCLUDED

template <class T>
class DatosTrasmitidos{
    std::list<T> Lista;

    private:

    public:

    DatosTrasmitidos(){}

    DatosTrasmitidos(const std::string& BYTES)
    {
        size_t PosInicial = 0 ;
        size_t BytesProcesados = 0;
        while( BytesProcesados != BYTES.size() )
        {
            size_t PosFinal = BYTES.find(END,PosInicial);
            size_t dist = PosFinal - PosInicial + 1;
            std::string UnPaquete = BYTES.substr(PosInicial,dist);
            PosInicial = PosFinal + 1 ;
            BytesProcesados += UnPaquete.size();
            T P(UnPaquete);
            this->Lista.push_back(P);
            //std::cout << UnPaquete << std::endl;
            //std::cout << "--------------------------"<< std::endl;
        }
    }

    ~DatosTrasmitidos(){}

    void agregarDato(T& dif)
    {
        this->Lista.push_back(dif);
    }

    std::string Serializar()
    {
        std::string TotalSerializado;
        //mistico
        typename std::list< T >::iterator it = this->Lista.begin();
        typename std::list< T >::iterator itEnd = this->Lista.end();

        while( it != itEnd )
        {
            T a = *it;
            TotalSerializado.append( a.Serializar() );
            it++;
        }
    return TotalSerializado;
    }

    std::list<T> getDatos() const
    {
        return this->Lista;
    }
};


#endif // DATOSTRASMITIDOS_H_INCLUDED
